package system.student.util;

import system.student.Interceptor.LogInterceptor;
import system.student.mapper.SystemLogMapper;

import java.lang.reflect.Proxy;

public class LogRecordUtil {
    /**
     * 生成代理对象（包装原始对象，拦截 @LogRecord 方法）
     * @param target 原始业务对象（需实现接口）
     * @param interfaceClass 原始对象实现的接口
     * @param <T> 接口类型
     * @return 代理对象
     */
    public static <T> T wrap(T target, Class<T> interfaceClass) {
        // 创建动态代理：拦截 interfaceClass 接口的所有方法
        return (T) Proxy.newProxyInstance(
                interfaceClass.getClassLoader(),
                new Class<?>[]{interfaceClass},
                new LogInterceptor(target, MapperUtil.getMapper(SystemLogMapper.class))
        );
    }
}